import%20marimo%0A%0A__generated_with%20%3D%20%220.11.23-dev5%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%3Cspan%20style%3D%22color%3A%20green%22%3EProject%20Overview%3C%2Fspan%3E%20%0A%0A%20%20%20%20%20%20%20%20We%20analyze%20gene%20expression%20patterns%20in%20breast%20tissue%20samples%20to%20identify%20differentially%20expressed%20genes%20associated%20with%20early-stage%20breast%20cancer%20and%20to%20study%20cancer%20progression.%20Our%20goal%20is%20to%20develop%20a%20predictive%20model%20that%20accurately%20assesses%20breast%20cancer%20prognosis%2C%20improving%20early%20detection%20and%20treatment%20planning.%22%0A%20%20%20%20%20%20%20%20Lot%20of%20early%20research%20paper%20were%20sujesting%20using%20models%20such%20as%20HMM%20how%20ever%20these%20models%20are%20Require%20pre-selected%20features%20(e.g.%2C%20from%20AHP-based%20ranking).%20May%20miss%20complex%20interactions%20between%20genes%20because%20they%20rely%20on%20predefined%20relationships.%20Thus%20we%20decided%20to%20use%20deep%20learning%20approach%20to%20be%20able%20to%20create%20a%20robust%20model%20for%20subtype%20classificatino%20and%20also%20assist%20us%20with%20prognosis%20studies.%20We%20migh%20still%20use%20ahp%20analysis%20for%20some%20side%20edas.%20as%20well%20as%20corolation%20analysis%20on%20clinical%20variables%20helping%20furthur%20diganosis.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%20%3Cspan%20style%3D%22color%3A%20green%22%3EVisually%20see%20the%20top%20300%20Genes%20in%20the%20Healthy%20samples%20dataset!%0A%0A%20%20%20%20%20%20%20%20Now%20lets%20see%20what%20are%20the%20most%20exressed%20genes%20in%20the%20BRCA%20genes.%20The%20mean%20expression%20for%20all%20the%20genes%20is%20selcted%20and%20following%20chart%20is%20showing%20the%20top%20300%20genes%20that%20had%20highes%20mean.%0A%0A%20%20%20%20%20%20%20%20**Note%3A**%20Even%20the%20genes%20has%20the%20most%20variations%20posses%20importance%20but%20this%20is%20not%20best%20way%20to%20calculate%20that.%20Instead%20we%20are%20going%20to%20use%20AHP%20analysis%20to%20rank%20the%20genes%20and%20analyze%20that%20more%20accurately.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20%22%22%22%0A%20%20%20%20intialize%20azure%20blob%20storage%20and%20data%20frames%0A%20%20%20%20load%20data%20sets%0A%20%20%20%20Our%20data%20frame%20is%20saved%20in%20Azure%20storage%20Blob%20and%20we%20are%20going%20to%20use%20this%20code%20in%20azure%20cli%20to%20create%20SAS%20to%20our%20datas%0A%0A%20%20%20%20SAS%20stands%20for%20Shared%20Access%20Signature.%0A%0A%20%20%20%20It's%20a%20secure%20URL%20token%20that%20gives%20temporary%2C%20restricted%20access%20to%20resources%20in%20our%20Azure%20Storage%20account%20%E2%80%94%20like%20blobs%2C%20containers%2C%20files%2C%20or%20queues%20%E2%80%94%20without%20exposing%20your%20storage%20account%20keys%0A%0A%20%20%20%20code%3A%0A%20%20%20%20az%20storage%20blob%20%3Cblob%20name%3E%20%5C%0A%20%20%20%20%20%20--account-name%20%3Cacount%20name%3E%20%5C%0A%20%20%20%20%20%20--container-name%20%3Ccontainer%20name%3E%20%5C%0A%20%20%20%20%20%20--name%20data.csv%20%5C%0A%20%20%20%20%20%20--permissions%20r%20%5C%0A%20%20%20%20%20%20--expiry%202025-12-31T23%3A59%3A00Z%20%5C%0A%20%20%20%20%20%20--output%20tsv%0A%0A%20%20%20%20%22%22%22%0A%0A%20%20%20%20import%20json%0A%20%20%20%20%23%20Load%20the%20healthy%20expressions%20directly%20from%20Azure%20Blob%20using%20SDK%0A%20%20%20%20%23%20container_name%20%3D%20%22your_container_name%22%0A%20%20%20%20%23%20blob_name%20%3D%20%22healthyExpressions.csv%22%0A%0A%20%20%20%20%23%20blob_client%20%3D%20blob_service_client.get_blob_client(container%3Dcontainer_name%2C%20blob%3Dblob_name)%0A%0A%20%20%20%20%23%20%23%20Download%20blob%20content%20as%20bytes%20and%20convert%20to%20pandas%20DataFrame%0A%20%20%20%20%23%20download_stream%20%3D%20blob_client.download_blob())%0A%20%20%20%20with%20open('data.json'%2C'r')%20as%20f%3A%0A%20%20%20%20%20%20%20%20data%20%3D%20json.load(f)%0A%20%20%20%20return%20data%2C%20f%2C%20json%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(data%2C%20mo)%3A%0A%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20import%20plotly.express%20as%20px%0A%0A%20%20%20%20%23%20healthy_dataSet%20%3D%20pd.read_csv(%22..%2F..%2Fdata%2FModelDataSets%2FhelthyExpressions.csv%22)%0A%20%20%20%20%23%20healthy_dataSet.set_index(healthy_dataSet.columns%5B0%5D%2C%20inplace%3DTrue)%0A%20%20%20%20healthy_dataSet%20%3D%20pd.read_csv(%0A%20%20%20%20%20%20%20%20data%5B%22data%22%5D%5B%22healthy_exp%22%5D%2C%20sep%3D%22%2C%22%2C%20index_col%3D0%0A%20%20%20%20)%0A%20%20%20%20%23%20healthy_dataSet.set_index(healthy_dataSet.columns%5B0%5D%2C%20inplace%3DTrue)%0A%20%20%20%20%23%20Extract%20genes%20and%20compute%20mean%20expression%0A%20%20%20%20genes%20%3D%20healthy_dataSet.columns%0A%20%20%20%20average%20%3D%20healthy_dataSet.mean(axis%3D0)%20%20%23%20Compute%20mean%20across%20all%20samples%0A%0A%20%20%20%20%23%20Create%20a%20new%20DataFrame%20with%20gene%20names%20and%20their%20average%20expression%0A%20%20%20%20plot_df%20%3D%20pd.DataFrame(%7B%22Genes%22%3A%20genes%2C%20%22avg_expr_level%22%3A%20average%7D)%0A%0A%20%20%20%20%23%20Sort%20and%20select%20the%20top%20300%20genes%20by%20expression%20level%0A%20%20%20%20plot_df%20%3D%20plot_df.sort_values(by%3D%22avg_expr_level%22%2C%20ascending%3DFalse).iloc%5B%3A300%5D%0A%0A%20%20%20%20%23%20Create%20an%20interactive%20bar%20plot%0A%20%20%20%20fig%20%3D%20mo.ui.plotly(%0A%20%20%20%20%20%20%20%20px.bar(%0A%20%20%20%20%20%20%20%20%20%20%20%20plot_df%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D%22Genes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D%22avg_expr_level%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Gene%20Expression%20Visualization%20for%20Top%20300%20Genes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20labels%3D%7B%22avg_expr_level%22%3A%20%22Mean%20Expression%20Level%22%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3D%22avg_expr_level%22%2C%20%20%23%20Optional%3A%20color%20for%20better%20visualization%0A%20%20%20%20%20%20%20%20).update_layout(xaxis_tickangle%3D-45)%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20Rotate%20x-axis%20labels%20for%20better%20visibility%0A%20%20%20%20mo.ui.tabs(%7B%22Visually%22%3A%20fig%2C%20%22Related_Data%22%3A%20mo.ui.table(healthy_dataSet)%7D)%0A%20%20%20%20return%20average%2C%20fig%2C%20genes%2C%20healthy_dataSet%2C%20pd%2C%20plot_df%2C%20px%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo%2C%20pd%2C%20plot_df%2C%20px)%3A%0A%20%20%20%20%23%20cancer_dataSet%20%3D%20pd.read_csv(%22..%2F..%2Fdata%2FModelDataSets%2FcancerExpressions.csv%22)%0A%20%20%20%20cancer_dataSet%20%3D%20pd.read_csv(%0A%20%20%20%20%20%20%20%20%22https%3A%2F%2Fgenescopestorage.blob.core.windows.net%2Fdatasets%2FcancerExpressions.csv%3Fsp%3Dr%26st%3D2025-03-23T20%3A59%3A32Z%26se%3D2026-11-26T05%3A59%3A32Z%26sv%3D2024-11-04%26sr%3Db%26sig%3D1VqeLY%252BtVSGYKIE1Q3VwQ1IEln45MHGnJmpJ5Za7bGM%253D%22%0A%20%20%20%20)%0A%20%20%20%20plot_genes%20%3D%20plot_df%5B%22Genes%22%5D.tolist()%0A%20%20%20%20average2%20%3D%20cancer_dataSet%5Bplot_genes%5D.mean(axis%3D0)%0A%20%20%20%20plot2_df%20%3D%20pd.DataFrame(%7B%22Genes%22%3A%20plot_genes%2C%20%22avg_expr_level%22%3A%20average2%7D)%0A%20%20%20%20fig2%20%3D%20mo.ui.plotly(%0A%20%20%20%20%20%20%20%20px.bar(%0A%20%20%20%20%20%20%20%20%20%20%20%20plot2_df%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D%22Genes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D%22avg_expr_level%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Gene%20Expression%20Visualization%20for%20Top%20300%20Genes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20labels%3D%7B%22avg_expr_level%22%3A%20%22Mean%20Expression%20Level%22%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3D%22avg_expr_level%22%2C%20%20%23%20Optional%3A%20color%20for%20better%20visualization%0A%20%20%20%20%20%20%20%20).update_layout(xaxis_tickangle%3D-45)%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20Rotate%20x-axis%20labels%20for%20better%20visibility%0A%20%20%20%20mo.ui.tabs(%7B%22Visualization%22%3A%20fig2%2C%20%22Relted_Data%22%3A%20mo.ui.table(plot2_df)%7D)%0A%20%20%20%20return%20average2%2C%20cancer_dataSet%2C%20fig2%2C%20plot2_df%2C%20plot_genes%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23cancer_dataSet.to_csv('cancer_exp.csv'%2C%20index%20%3D%20False)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%3Cspan%20style%3D%22color%3A%20brown%22%3EAnalysis%20of%20biomarkers%20of%20breast%20cancers%20usting%20AHP%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20**The%20Cancer%20Biomarkers**%20are%20biological%20molecules%20that%20indicate%20the%20presence%20of%20cancer%20or%20abnormal%20cell%20processes.%20They%20can%20be%20found%20in%20blood%2C%20urine%2C%20tissue%2C%20or%20other%20bodily%20fluids.%20We%20are%20studying%20this%20by%20analysing%20the%20gene%20expressions%20of%20healthy%20and%20cancerous%20samples.%20To%20achive%20this%2C%20we%20are%20using%20%3Cspan%20style%3D%22color%3A%20green%22%3EAnalatical%20Hiracial%20Process%3C%2Fspan%3E.%20%0A%0A%20%20%20%20%20%20%20%20The%20Analytic%20Hierarchy%20Process%20(AHP)%20is%20a%20structured%20decision-making%20approach%20that%20helps%20prioritize%20and%20select%20the%20most%20important%20criteria%20in%20complex%20problems.%20It%20works%20by%20breaking%20a%20problem%20into%20a%20hierarchy%20of%20criteria%20and%20sub-criteria%2C%20assigning%20numerical%20values%20to%20their%20relative%20importance%2C%20and%20using%20pairwise%20comparisons%20to%20generate%20a%20weighted%20ranking.%20Traditional%20AHP%20is%20often%20qualitative%2C%20relying%20on%20expert%20judgment%2C%20but%20in%20bioinformatics%2C%20a%20modified%20AHP%20can%20integrate%20statistical%20methods%20to%20enhance%20objectivity.%0A%0A%0A%20%20%20%20%20%20%20%20In%20the%20context%20of%20biomarker%20analysis%20for%20BRCA-related%20research%2C%20AHP%20can%20significantly%20improve%20the%20selection%20of%20key%20biomarkers%20by%20aggregating%20multiple%20statistical%20gene%20selection%20methods.%20Instead%20of%20relying%20on%20a%20single%20metric%2C%20such%20as%20a%20t-test%20or%20entropy%2C%20the%20modified%20AHP%20integrates%20multiple%20ranking%20criteria%20(e.g.%2C%20Wilcoxon%20test%2C%20ROC%20curves%2C%20signal-to-noise%20ratio)%20to%20create%20a%20more%20stable%20and%20reliable%20subset%20of%20genes.%20This%20method%20ensures%20that%20the%20chosen%20biomarkers%20are%20not%20only%20statistically%20significant%20but%20also%20robust%20across%20different%20datasets%20and%20ranking%20approaches.%20By%20identifying%20the%20most%20influential%20genes%20systematically%2C%20AHP%20helps%20refine%20the%20list%20of%20biomarkers%20that%20could%20be%20further%20analyzed%20for%20their%20role%20in%20breast%20cancer%20progression%2C%20prognosis%2C%20or%20response%20to%20treatment.%0A%0A%20%20%20%20%20%20%20%20%3Cspan%20style%3D%22color%3A%20green%22%3EModified%20AHP%3A%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20*%20%3Cspan%20style%3D%22color%3A%20green%22%3ETwo-Sample%20t-Test%3A%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20Purpose%3A%20Identifies%20statistically%20significant%20differences%20in%20gene%20expression%20between%20two%20groups%20(e.g.%2C%20cancerous%20vs.%20healthy%20cells).%0A%0A%20%20%20%20%20%20%20%20Method%3A%20Compares%20the%20means%20of%20two%20independent%20samples%20using%20the%20t-statistic.%0A%0A%20%20%20%20%20%20%20%20Output%3A%20A%20t-score%20and%20p-value.%20A%20small%20p-value%20indicates%20significant%20differences%20in%20expression.%0A%0A%20%20%20%20%20%20%20%20*%20%3Cspan%20style%3D%22color%3A%20green%22%3EEntropy%20Test%3A%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20Purpose%3A%20Measures%20the%20disorder%20in%20gene%20expression%20levels.%0A%0A%20%20%20%20%20%20%20%20Method%3A%20Computes%20entropy%20using%20histogram-based%20probability%20distributions.%0A%0A%20%20%20%20%20%20%20%20Output%3A%20Higher%20entropy%20values%20indicate%20genes%20with%20more%20variability%2C%20which%20are%20more%20useful%20for%20classification.%0A%0A%20%20%20%20%20%20%20%20*%20%3Cspan%20style%3D%22color%3A%20green%22%3EWilcoxon%20Rank-Sum%20Test%3A%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20Purpose%3A%20A%20non-parametric%20test%20used%20to%20rank%20genes%20based%20on%20their%20median%20expression%20differences.%0A%0A%20%20%20%20%20%20%20%20Method%3A%20Compares%20the%20ranks%20of%20two%20independent%20samples%20instead%20of%20their%20means.%0A%0A%20%20%20%20%20%20%20%20Output%3A%20A%20Wilcoxon%20statistic%20and%20a%20p-value.%20A%20low%20p-value%20suggests%20significant%20differences%20in%20gene%20ranks.%0A%0A%20%20%20%20%20%20%20%20*%20%3Cspan%20style%3D%22color%3A%20green%22%3ESignal-to-Noise%20Ratio%20(SNR)%3A%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20Purpose%3A%20Compares%20the%20difference%20in%20mean%20expression%20levels%20relative%20to%20the%20standard%20deviation.%0A%0A%20%20%20%20%20%20%20%20Method%3A%20SNR%20is%20calculated%20as%20the%20difference%20between%20the%20means%20of%20two%20groups%20divided%20by%20the%20sum%20of%20their%20standard%20deviations.%0A%0A%20%20%20%20%20%20%20%20Output%3A%20A%20higher%20SNR%20suggests%20that%20the%20gene%20has%20a%20strong%20discriminatory%20power%20between%20groups.%0A%0A%20%20%20%20%20%20%20%20*%20%3Cspan%20style%3D%22color%3A%20green%22%3EAHP%20Weighted%20Ranking%3A%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20Purpose%3A%20Integrates%20statistical%20measures%20into%20a%20single%20weighted%20ranking%20system%20to%20prioritize%20significant%20genes.%0A%0A%20%20%20%20%20%20%20%20Method%3A%20Normalizes%20scores%20across%20all%20statistical%20tests%20and%20applies%20predefined%20weights.%0A%0A%20%20%20%20%20%20%20%20Output%3A%20A%20final%20ranking%20score%20indicating%20the%20importance%20of%20each%20gene%20in%20classification.%0A%0A%20%20%20%20%20%20%20%20*%20%3Cspan%20style%3D%22color%3A%20green%22%3E%20Eigenvalues%20and%20Eigenvectors%20in%20Gene%20Selection%20(Modified%20AHP)%3A%20%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20The%20modified%20Analytic%20Hierarchy%20Process%20(AHP)%20used%20for%20gene%20selection%20involves%20constructing%20a%20pairwise%20comparison%20matrix%20where%20genes%20are%20ranked%20based%20on%20multiple%20statistical%20criteria%20(e.g.%2C%20t-test%2C%20entropy%2C%20ROC%2C%20Wilcoxon%2C%20and%20SNR).%0A%0A%20%20%20%20%20%20%20%20The%20matrix%20is%20required%20to%20be%20consistent%2C%20meaning%20that%20its%20elements%20must%20satisfy%20certain%20transitivity%20properties.%0A%20%20%20%20%20%20%20%20Eigenvectors%20are%20computed%20from%20this%20matrix%20to%20obtain%20ranking%20scores%20of%20genes.%20These%20eigenvectors%20correspond%20to%20the%20principal%20components%20that%20define%20the%20most%20discriminative%20genes.%0A%0A%20%20%20%20%20%20%20%20The%20largest%20eigenvalue%20(%F0%9D%9C%86%F0%9D%91%9A%F0%9D%91%8E%F0%9D%91%A5)%20is%20used%20to%20compute%20the%20Consistency%20Index%20(CI)%20and%20Consistency%20Ratio%20(CR)%20to%20ensure%20that%20the%20ranking%20process%20is%20mathematically%20sound.%0A%20%20%20%20%20%20%20%20Eigenvalues%20and%20Eigenvectors%20in%20HMMs%3A%0A%0A%20%20%20%20%20%20%20%20HMMs%20use%20transition%20probability%20matrices%20to%20model%20state%20changes%20in%20gene%20expression%20related%20to%20cancer%20progression.%0A%20%20%20%20%20%20%20%20The%20transition%20probability%20matrix%20(A)%20is%20a%20stochastic%20matrix%20that%20describes%20the%20likelihood%20of%20transitioning%20from%20one%20state%20to%20another.%0A%0A%20%20%20%20%20%20%20%20The%20stationary%20distribution%20of%20states%20(long-term%20probabilities%20of%20each%20state)%20is%20found%20by%20computing%20the%20dominant%20eigenvector%20(associated%20with%20eigenvalue%201)%20of%20this%20matrix.%0A%0A%20%20%20%20%20%20%20%20Spectral%20analysis%20(using%20eigenvalues)%20helps%20determine%20the%20stability%20and%20convergence%20properties%20of%20the%20HMM.%0A%20%20%20%20%20%20%20%20Why%20This%20Matters%20for%20Cancer%20Classification%0A%0A%20%20%20%20%20%20%20%20Gene%20Selection%20(AHP%20with%20Eigenvectors)%20ensures%20that%20the%20most%20informative%20genes%20are%20chosen%20based%20on%20multiple%20criteria%2C%20improving%20classification%20accuracy.%0A%0A%20%20%20%20%20%20%20%20HMMs%20with%20Eigenvalues%20provide%20a%20probabilistic%20framework%20to%20model%20cancer%20progression%20and%20classify%20gene%20expression%20data%20efficiently.%0A%0A%20%20%20%20%20%20%20%20Eigenvectors%20define%20important%20features%2C%20helping%20reduce%20computational%20complexity%20and%20improving%20stability.%0A%0A%0A%20%20%20%20%20%20%20%20%3Cspan%20style%3D%22color%3A%20brown%22%3EPlease%20run%20%5BcomputeAhp.py%5D(https%3A%2F%2Fgithub.com%2FANikfarjam%2FGeneScope)%20to%20calculate%20the%20ahp%20scores!%3C%2Fspan%3E%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%20**Pairwise%20Comparison%20Matrix%20and%20Eigenvalues%20in%20Modified%20AHP**%0A%0A%20%20%20%20%20%20%20%20The%20article%20describes%20the%20calculation%20of%20the%20**pairwise%20comparison%20matrix**%20and%20the%20**eigenvalues%20and%20eigenvectors**%20in%20the%20context%20of%20the%20**modified%20Analytic%20Hierarchy%20Process%20(AHP)**%20used%20for%20gene%20selection.%0A%0A%20%20%20%20%20%20%20%20%23%23%20**1.%20Construction%20of%20the%20Pairwise%20Comparison%20Matrix**%0A%20%20%20%20%20%20%20%20The%20pairwise%20comparison%20matrix%20%24X%20%3D%20(x_%7Bij%7D)%24%20is%20an%20%24n%20%5Ctimes%20n%24%20matrix%2C%20where%20each%20element%20%24x_%7Bij%7D%24%20represents%20the%20relative%20importance%20of%20gene%20%24i%24%20compared%20to%20gene%20%24j%24.%20The%20matrix%20satisfies%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20x_%7Bij%7D%20%3D%20%5Cfrac%7B1%7D%7Bx_%7Bji%7D%7D%2C%20%5Cquad%20%5Cforall%20i%20%5Cneq%20j%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20x_%7Bii%7D%20%3D%201%2C%20%5Cquad%20%5Cforall%20i%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20The%20elements%20of%20the%20matrix%20are%20computed%20based%20on%20**quantitative%20criteria**%2C%20which%20include%3A%0A%20%20%20%20%20%20%20%20-%20**t-test**%0A%20%20%20%20%20%20%20%20-%20**Entropy**%0A%20%20%20%20%20%20%20%20-%20**Receiver%20Operating%20Characteristic%20(ROC)%20curve**%0A%20%20%20%20%20%20%20%20-%20**Wilcoxon%20test**%0A%20%20%20%20%20%20%20%20-%20**Signal-to-Noise%20Ratio%20(SNR)**%0A%0A%20%20%20%20%20%20%20%20The%20absolute%20difference%20between%20the%20statistical%20values%20of%20two%20genes%20%24i%24%20and%20%24j%24%20is%20used%20to%20compute%20the%20pairwise%20importance%20score%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20d_%7Bij%7D%20%3D%20%7Cc_i%20-%20c_j%7C%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20where%20%24c_i%24%20and%20%24c_j%24%20are%20the%20scores%20of%20genes%20%24i%24%20and%20%24j%24%20under%20the%20given%20criterion.%20The%20final%20matrix%20values%20are%20scaled%20within%20the%20range%20**%5B1%2C10%5D**%20using%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20c%20%3D%20%5Cfrac%7Bd_%7Bij%7D%20-%209%7D%7Bc_%7B%5Cmax%7D%7D%20%2B%201%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20x_%7Bij%7D%20%3D%0A%20%20%20%20%20%20%20%20%5Cbegin%7Bcases%7D%20%0A%20%20%20%20%20%20%20%20c%2C%20%26%20%5Ctext%7Bif%20%7D%20c_i%20%5Cgeq%20c_j%20%5C%5C%0A%20%20%20%20%20%20%20%20%5Cfrac%7B1%7D%7Bc%7D%2C%20%26%20%5Ctext%7Botherwise%7D%0A%20%20%20%20%20%20%20%20%5Cend%7Bcases%7D%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20where%20%24c_%7B%5Cmax%7D%24%20is%20the%20maximum%20distance%20between%20genes.%0A%0A%20%20%20%20%20%20%20%20%23%23%20**2.%20Eigenvector%20Calculation%20(Ranking%20Genes)**%0A%20%20%20%20%20%20%20%20Once%20the%20pairwise%20comparison%20matrix%20is%20constructed%2C%20**eigenvectors**%20are%20used%20to%20determine%20the%20ranking%20of%20genes.%20The%20eigenvector%20%24%5Clambda%24%20is%20computed%20using%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20S_j%20%3D%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20x_%7Bij%7D%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%5Clambda_i%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%20%5Cfrac%7Bx_%7Bij%7D%7D%7BS_j%7D%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20This%20**normalized%20eigenvector**%20represents%20the%20ranking%20of%20genes.%0A%0A%20%20%20%20%20%20%20%20%23%23%20**3.%20Eigenvalue%20Calculation%20and%20Consistency%20Check**%0A%20%20%20%20%20%20%20%20The%20largest%20eigenvalue%20%24%5Clambda_%7B%5Cmax%7D%24%20is%20estimated%20as%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%5Clambda_%7B%5Cmax%7D%20%3D%20%5Cfrac%7B1%7D%7B%5Clambda_i%7D%20%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%20x_%7Bij%7D%20%5Clambda_j%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20The%20**Consistency%20Index%20(CI)**%20is%20given%20by%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20CI%20%3D%20%5Cfrac%7B%5Clambda_%7B%5Cmax%7D%20-%20n%7D%7Bn-1%7D%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20The%20**Consistency%20Ratio%20(CR)**%20is%20then%20computed%20using%20a%20**Random%20Index%20(RI)**%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20CR%20%3D%20%5Cfrac%7BCI%7D%7BRI%7D%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20A%20**CR%20value%20%E2%89%A4%200.1**%20indicates%20an%20acceptable%20consistency%20level.%0A%0A%20%20%20%20%20%20%20%20%23%23%20**Summary**%0A%20%20%20%20%20%20%20%20-%20The%20pairwise%20comparison%20matrix%20is%20built%20using%20**quantitative%20ranking**%20instead%20of%20expert%20judgment.%0A%20%20%20%20%20%20%20%20-%20The%20eigenvector%20of%20the%20matrix%20determines%20the%20relative%20ranking%20of%20genes.%0A%20%20%20%20%20%20%20%20-%20The%20eigenvalue%20and%20consistency%20ratio%20ensure%20that%20the%20matrix%20is%20valid%20for%20decision-making.%0A%0A%20%20%20%20%20%20%20%20This%20method%20ensures%20an%20**objective**%20and%20**stable**%20way%20to%20rank%20genes%2C%20which%20improves%20classification%20accuracy%20in%20cancer%20detection%20using%20**Hidden%20Markov%20Models%20(HMMs)**.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.image(%0A%20%20%20%20%20%20%20%20%22AHPexplnation.png%22%2C%0A%20%20%20%20%20%20%20%20caption%3D%22The%20hierarchy%20of%20factors%20for%20gene%20selection%20by%20AHP.%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(data%2C%20pd)%3A%0A%20%20%20%20ahp_df%20%3D%20pd.read_csv(data%5B%22data%22%5D%5B%22ahp_scores%22%5D)%0A%20%20%20%20return%20(ahp_df%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(ahp_df%2C%20mo)%3A%0A%20%20%20%20import%20altair%20as%20alt%0A%0A%0A%20%20%20%20%23%20Sort%20and%20take%20top%20500%20genes%0A%20%20%20%20ahp_top%20%3D%20ahp_df.sort_values(by%3D%22Scores%22%2C%20ascending%3DFalse).iloc%5B%3A500%2C%20%3A%5D%0A%0A%20%20%20%20%23%20Ensure%20%22Gene%22%20column%20is%20retained%20and%20treated%20as%20string%0A%20%20%20%20ahp_top_scaled%20%3D%20ahp_top.copy()%0A%20%20%20%20ahp_top_scaled.iloc%5B%3A%2C%20-1%3A%5D%20*%3D%201e6%20%20%23%20Apply%20scaling%0A%20%20%20%20ahp_top_scaled%5B%22Gene%22%5D%20%3D%20ahp_top_scaled%5B%22Gene%22%5D.astype(str)%0A%20%20%20%20ahp_top_scaled%5B%22Scores%22%5D%20%3D%20ahp_top_scaled%5B%22Scores%22%5D.astype(float)%0A%20%20%20%20%23%20Selection%20for%20interactive%20brushing%0A%20%20%20%20brush%20%3D%20alt.selection_interval(encodings%3D%5B%22x%22%2C%20%22y%22%5D)%0A%20%20%20%20%23%20Scatter%20Plot%20(Interactive)%0A%20%20%20%20chart%20%3D%20mo.ui.altair_chart(%0A%20%20%20%20%20%20%20%20alt.Chart(ahp_top_scaled)%0A%20%20%20%20%20%20%20%20.mark_circle()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D%22Scores%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D%22t_test%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3D%22entropy%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20size%3D%22Wilcoxon%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20tooltip%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Gene%3AN%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Scores%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22t_test%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22entropy%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22roc_auc%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Wilcoxon%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Wilcoxon_p%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22snr%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.add_params(brush)%0A%20%20%20%20)%0A%20%20%20%20return%20ahp_top%2C%20ahp_top_scaled%2C%20alt%2C%20brush%2C%20chart%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(chart%2C%20mo)%3A%0A%20%20%20%20%23%20Display%20chart%20and%20dynamically%20updating%20table%0A%20%20%20%20mo.vstack(%5Bchart%2C%20mo.ui.table(chart.value)%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ahp_df%2C%20mo)%3A%0A%20%20%20%20mo.ui.data_explorer(ahp_df)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22Our%20ahp%20analysis%20shows%20that%20these%20are%20top%20500%20ranked%20genes%20associated%20with%20breast%20cancer%20and%20their%20function%20in%20the%20body.%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo%2C%20pd)%3A%0A%20%20%20%20desc_df%20%3D%20pd.read_csv(%22top500_desc.csv%22)%0A%20%20%20%20mo.ui.tabs(%7B%0A%20%20%20%20%20%20%20%20'Visual_Analysis'%3Amo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20%3Cspan%20style'%22color%3A%20green%22%3E%20ROC%20AUC%20vs%20AHP%20Scores%20%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**U-shaped%20curve%3A**%20AHP%20scores%20are%20higher%20for%20genes%20with%20ROC%20AUC%20close%20to%200%20or%201%2C%20and%20lower%20near%200.5.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Biological%20meaning%3A**%20Genes%20that%20strongly%20distinguish%20cancer%20subtypes%20(either%20positively%20or%20negatively)%20are%20prioritized.%20This%20includes%20both%20upregulated%20and%20downregulated%20biomarkers%2C%20suggesting%20AHP%20is%20sensitive%20to%20directional%20changes%20in%20gene%20activity%20relevant%20to%20breast%20cancer.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20%3Cspan%20style'%22color%3A%20green%22%3E%20SNR%20(Signal-to-Noise%20Ratio)%20vs%20AHP%20Scores%20%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Clear%20positive%20trend%3A**%20As%20SNR%20increases%2C%20so%20do%20AHP%20scores.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Biological%20meaning%3A**%20Genes%20with%20strong%20expression%20differences%20and%20low%20intra-class%20variability%20are%20ranked%20higher.%20These%20are%20likely%20stable%20and%20robust%20breast%20cancer%20biomarkers%2C%20capable%20of%20separating%20cancerous%20vs.%20non-cancerous%20or%20different%20subtypes%20(e.g.%2C%20HER2%2B%20vs.%20triple-negative%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20%3Cspan%20style'%22color%3A%20green%22%3E%20t-test%20Statistic%20vs%20AHP%20Scores%20%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Strong%20linear%20correlation%3A**%20Higher%20t-values%20lead%20to%20higher%20AHP%20scores.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Biological%20meaning%3A**%20AHP%20emphasizes%20genes%20that%20show%20statistically%20significant%20differential%20expression%20between%20groups.%20This%20supports%20the%20discovery%20of%20potential%20diagnostic%20or%20prognostic%20genes%20involved%20in%20tumor%20behavior%2C%20estrogen%20receptor%20signaling%2C%20or%20aggressiveness.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20%3Cspan%20style'%22color%3A%20green%22%3E%20%20Wilcoxon%20Statistic%20and%20Wilcoxon%20p%20values%20vs%20AHP%20Scores%20%3C%2Fspan%3E%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Positive%20correlation**%2C%20especially%20at%20higher%20Wilcoxon%20values.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Biological%20meaning%3A**%20Even%20in%20non-parametric%20comparisons%2C%20AHP%20is%20sensitive%20to%20expression%20shifts.%20This%20indicates%20robustness%20to%20outliers%20and%20validates%20genes%20that%20may%20not%20follow%20normal%20distribution%2C%20which%20is%20common%20in%20real%20patient%20gene%20expression%20profiles.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Low%20p-values%20(~0)%20align%20with%20high%20AHP%20scores**%2C%20but%20score%20distribution%20shows%20banding%20patterns.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Biological%20meaning%3A**%20Genes%20with%20statistically%20significant%20differences%20in%20expression%20across%20conditions%20(e.g.%2C%20cancer%20subtypes%20or%20stages)%20are%20appropriately%20prioritized.%20The%20banding%20may%20reflect%20discrete%20thresholds%20or%20tied%20rankings%20from%20AHP%2C%20often%20seen%20when%20many%20genes%20have%20similar%20significance%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.image('rocVahp.png')%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.image('snrVahp.png')%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.image('t_testVahp.png')%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.image('wilcoxonVahp.png')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20'top%20500%20genes%20and%20thei%20info'%3A%20mo.ui.table(desc_df)%2C%0A%20%20%20%20%7D)%0A%20%20%20%20return%20(desc_df%2C)%0A%0A%0A%40app.cell%0Adef%20_(ahp_df%2C%20pd%2C%20px)%3A%0A%20%20%20%20from%20sklearn.decomposition%20import%20PCA%0A%20%20%20%20from%20sklearn.preprocessing%20import%20StandardScaler%0A%20%20%20%20from%20sklearn.impute%20import%20SimpleImputer%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20import%20seaborn%20as%20sns%0A%0A%20%20%20%20%23%20Step%201%3A%20Select%20relevant%20features%0A%20%20%20%20features%20%3D%20%5B't_test'%2C%20'entropy'%2C%20'roc_auc'%2C%20'Wilcoxon'%2C%20'Wilcoxon_p'%2C%20'snr'%2C%20'Scores'%5D%0A%20%20%20%20X%20%3D%20ahp_df%5Bfeatures%5D.copy()%0A%0A%20%20%20%20%23%20Step%202%3A%20Drop%20any%20columns%20that%20are%20completely%20NaN%0A%20%20%20%20X%20%3D%20X.dropna(axis%3D1%2C%20how%3D'all')%0A%0A%20%20%20%20%23%20Step%203%3A%20Store%20actual%20feature%20names%20that%20remain%0A%20%20%20%20used_features%20%3D%20X.columns.tolist()%0A%0A%20%20%20%20%23%20Step%204%3A%20Impute%20missing%20values%0A%20%20%20%20imputer%20%3D%20SimpleImputer(strategy%3D%22mean%22)%0A%20%20%20%20X_imputed%20%3D%20imputer.fit_transform(X)%0A%0A%20%20%20%20%23%20Step%205%3A%20Standardize%0A%20%20%20%20scaler%20%3D%20StandardScaler()%0A%20%20%20%20X_scaled%20%3D%20scaler.fit_transform(X_imputed)%0A%0A%20%20%20%20%23%20Step%206%3A%20PCA%0A%20%20%20%20pca%20%3D%20PCA(n_components%3D3)%0A%20%20%20%20X_pca%20%3D%20pca.fit_transform(X_scaled)%0A%0A%20%20%20%20%23%20Step%207%3A%20Create%20column%20names%20for%20PCA%20components%0A%20%20%20%20pc_names%20%3D%20%5Bf%22PC%7Bi%2B1%7D%22%20for%20i%20in%20range(pca.n_components)%5D%0A%0A%20%20%20%20%23%20Step%208%3A%20Add%20PCA%20results%20to%20your%20dataframe%0A%20%20%20%20for%20i%2C%20pc%20in%20enumerate(pc_names)%3A%0A%20%20%20%20%20%20%20%20ahp_df%5Bpc%5D%20%3D%20X_pca%5B%3A%2C%20i%5D%0A%0A%20%20%20%20%23%20Step%209%3A%20Axis%20labels%20with%20variance%20explained%0A%20%20%20%20explained_var%20%3D%20pca.explained_variance_ratio_%20*%20100%0A%20%20%20%20axis_labels%20%3D%20%5Bf%22%7Bpc%7D%20(%7Bvar%3A.1f%7D%25)%22%20for%20pc%2C%20var%20in%20zip(pc_names%2C%20explained_var)%5D%0A%0A%20%20%20%20%23%20Step%2010%3A%203D%20scatter%20plot%0A%20%20%20%20pca_fig%20%3D%20px.scatter_3d(%0A%20%20%20%20%20%20%20%20ahp_df%2C%0A%20%20%20%20%20%20%20%20x%3D%22PC1%22%2C%0A%20%20%20%20%20%20%20%20y%3D%22PC2%22%2C%0A%20%20%20%20%20%20%20%20z%3D%22PC3%22%2C%0A%20%20%20%20%20%20%20%20color%3D%22Scores%22%2C%0A%20%20%20%20%20%20%20%20hover_data%3D%5B%22Gene%22%5D%2C%0A%20%20%20%20%20%20%20%20title%3D%223D%20PCA%20of%20Gene%20AHP%20Scores%22%2C%0A%20%20%20%20%20%20%20%20labels%3D%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22PC1%22%3A%20axis_labels%5B0%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22PC2%22%3A%20axis_labels%5B1%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22PC3%22%3A%20axis_labels%5B2%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Scores%22%3A%20%22AHP%20Score%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%0A%20%20%20%20pca_fig.update_layout(coloraxis_colorbar%3Ddict(title%3D%22AHP%20Score%22))%0A%20%20%20%20pca_fig.show()%0A%0A%20%20%20%20%23%20Step%2011%3A%20PCA%20Loadings%20using%20only%20the%20features%20that%20were%20actually%20used%0A%20%20%20%20loadings%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20pca.components_.T%2C%0A%20%20%20%20%20%20%20%20columns%3Dpc_names%2C%0A%20%20%20%20%20%20%20%20index%3Dused_features%20%20%23%20%E2%9C%85%20This%20is%20the%20fix!%0A%20%20%20%20)%0A%0A%20%20%20%20print(%22%F0%9F%94%8D%20PCA%20Loadings%3A%22)%0A%20%20%20%20print(loadings)%0A%0A%20%20%20%20%23%20Optional%3A%20Heatmap%20of%20feature%20contributions%0A%20%20%20%20plt.figure(figsize%3D(8%2C%205))%0A%20%20%20%20sns.heatmap(loadings%2C%20annot%3DTrue%2C%20cmap%3D%22coolwarm%22)%0A%20%20%20%20plt.title(%22PCA%20Component%20Loadings%20(Feature%20Contributions)%22)%0A%20%20%20%20plt.show()%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20PCA%2C%0A%20%20%20%20%20%20%20%20SimpleImputer%2C%0A%20%20%20%20%20%20%20%20StandardScaler%2C%0A%20%20%20%20%20%20%20%20X%2C%0A%20%20%20%20%20%20%20%20X_imputed%2C%0A%20%20%20%20%20%20%20%20X_pca%2C%0A%20%20%20%20%20%20%20%20X_scaled%2C%0A%20%20%20%20%20%20%20%20axis_labels%2C%0A%20%20%20%20%20%20%20%20explained_var%2C%0A%20%20%20%20%20%20%20%20features%2C%0A%20%20%20%20%20%20%20%20i%2C%0A%20%20%20%20%20%20%20%20imputer%2C%0A%20%20%20%20%20%20%20%20loadings%2C%0A%20%20%20%20%20%20%20%20pc%2C%0A%20%20%20%20%20%20%20%20pc_names%2C%0A%20%20%20%20%20%20%20%20pca%2C%0A%20%20%20%20%20%20%20%20pca_fig%2C%0A%20%20%20%20%20%20%20%20plt%2C%0A%20%20%20%20%20%20%20%20scaler%2C%0A%20%20%20%20%20%20%20%20sns%2C%0A%20%20%20%20%20%20%20%20used_features%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%20%3Cspan%20style%3D%22color%3A%20green%22%3EPairWize%20MAtrix%20Visualization%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20ahp_df%2C%0A%20%20%20%20ahp_top%2C%0A%20%20%20%20entropy_matrix%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20pd%2C%0A%20%20%20%20px%2C%0A%20%20%20%20roc_matrix%2C%0A%20%20%20%20snr_matrix%2C%0A%20%20%20%20t_test_matrix%2C%0A)%3A%0A%20%20%20%20%23%20Convert%20sparse%20matrix%20to%20dense%20format%0A%20%20%20%20t_test_dense_matrix%20%3D%20(%0A%20%20%20%20%20%20%20%20t_test_matrix.toarray()%0A%20%20%20%20)%20%20%23%20Convert%20sparse%20to%20dense%20numpy%20array%0A%20%20%20%20entropy_dense_matrix%20%3D%20entropy_matrix.toarray()%0A%20%20%20%20roc_dense_matrix%20%3D%20roc_matrix.toarray()%0A%20%20%20%20snr_dense_matrix%20%3D%20snr_matrix.toarray()%0A%20%20%20%20%23%20top%20genes%0A%20%20%20%20top_genes%20%3D%20ahp_top.Gene.tolist()%5B%3A50%5D%0A%20%20%20%20%23%20Create%20a%20DataFrame%20with%20gene%20names%20as%20both%20index%20and%20columns%0A%20%20%20%20t_test_pairwise_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20t_test_dense_matrix%2C%20index%3Dahp_df.Gene%2C%20columns%3Dahp_df.Gene%0A%20%20%20%20).loc%5Btop_genes%2C%20top_genes%5D%0A%20%20%20%20entropy_pairwise_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20entropy_dense_matrix%2C%20index%3Dahp_df.Gene%2C%20columns%3Dahp_df.Gene%0A%20%20%20%20).loc%5Btop_genes%2C%20top_genes%5D%0A%20%20%20%20roc_pairwise_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20roc_dense_matrix%2C%20index%3Dahp_df.Gene%2C%20columns%3Dahp_df.Gene%0A%20%20%20%20).loc%5Btop_genes%2C%20top_genes%5D%0A%20%20%20%20snr_pairwise_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20snr_dense_matrix%2C%20index%3Dahp_df.Gene%2C%20columns%3Dahp_df.Gene%0A%20%20%20%20).loc%5Btop_genes%2C%20top_genes%5D%0A%0A%0A%20%20%20%20%23%20Replace%20NaN%20values%20(if%20any)%20with%200%0A%20%20%20%20def%20creat_heatmap(df)%3A%0A%20%20%20%20%20%20%20%20fig%20%3D%20px.imshow(df)%0A%20%20%20%20%20%20%20%20return%20mo.ui.plotly(fig)%0A%0A%0A%20%20%20%20mo.ui.tabs(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22T_Test%22%3A%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20creat_heatmap(t_test_pairwise_df)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.ui.table(t_test_pairwise_df)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Entropy%22%3A%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20creat_heatmap(entropy_pairwise_df)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.ui.table(entropy_pairwise_df)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22ROC%22%3A%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Bcreat_heatmap(roc_pairwise_df)%2C%20mo.ui.table(roc_pairwise_df)%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22SNR%22%3A%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Bcreat_heatmap(snr_pairwise_df)%2C%20mo.ui.table(snr_pairwise_df)%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20creat_heatmap%2C%0A%20%20%20%20%20%20%20%20entropy_dense_matrix%2C%0A%20%20%20%20%20%20%20%20entropy_pairwise_df%2C%0A%20%20%20%20%20%20%20%20roc_dense_matrix%2C%0A%20%20%20%20%20%20%20%20roc_pairwise_df%2C%0A%20%20%20%20%20%20%20%20snr_dense_matrix%2C%0A%20%20%20%20%20%20%20%20snr_pairwise_df%2C%0A%20%20%20%20%20%20%20%20t_test_dense_matrix%2C%0A%20%20%20%20%20%20%20%20t_test_pairwise_df%2C%0A%20%20%20%20%20%20%20%20top_genes%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20gense_stage%3Dplot_df%5B'Genes'%5D.to_list()%5B%3A10%5D%0A%20%20%20%20%23%20stage_plt_df%20%3D%20grouped_df%5Bgense_stage%5D%0A%20%20%20%20%23%20mo.ui.plotly(%0A%20%20%20%20%23%20%20%20%20%20px.line(stage_plt_df%2C%20y%3Dstage_plt_df.columns%2C%20x%3Dstage_plt_df.index)%0A%20%20%20%20%23%20)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
d9b1c04fc3548b69f175ea21aa5029dd2cb2b2b51b69c0bf7bd50e3cbfefec99